704 Binary Search
- 在排序陣列中找到目標值,若存在回傳 index,不存在回傳 -1。
 
- kotlin
 
class Solution {
    fun search(nums: IntArray, target: Int): Int {
        var left = 0
        var right = nums.size - 1
        while (left <= right) {
            val mid = left + (right - left) / 2
            when {
                nums[mid] == target -> return mid
                nums[mid] < target -> left = mid + 1
                else -> right = mid - 1
            }
        }
        return -1
    }
}
- follow up
- 如果陣列有重複值,要找第一個或最後一個出現的 index?(改成 lower_bound / upper_bound)
 
- 如果資料是無限流(Infinite Array Search),如何應對?(先 exponential search 找邊界,再 binary search)
 
- 如果陣列大小非常大,如何降低 磁碟 IO 或網路存取次數?(B-Tree / 分段 binary search)